package com.healthcarex.hip.saas.message.hl7.v3.model.common;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.constraints.NotBlank;
import java.util.Date;
import java.util.List;

/**
 * @author  ChenPan
 * @date   2018/8/1 13:31
 * description: 患者信息
 */
@Data
public class Patient {

    /**
     * 患者主索引号
     */
    private String empiId;
    /**
     * 患者本地Id
     */
    @NotBlank
    private String localId;

    /**
     * 门急诊号
     */
    private String outpatientNo;

    /**
     * 住院号
     */
    private String inpatientNo;

    /**
     * 就诊卡号
     */
    private String medicalCardNo;

    /**
     * 医保号
     */
    private String insuranceNo;

    /**
     * 患者域代码（实际业务上与localTypeCode值相同）
     */
    private String domainId;

    /**
     * 患者类型代码
     */
    private String localTypeCode;

    /**
     * 患者类型名称
     */
    private String localTypeName;

    /**
     * 登记时间
     *
     */
    @NotBlank
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date effectiveTime;

    /**
     * 身份证号
     */
    private String identityCardNo;

    /**
     * 证件
     */
    private List<Identification> identifications;

    /**
     * 健康卡号
     */
    private String healthCardNo;

    /**
     * 健康卡机构代码
     */
    private String healthCardOrgCode;

    /**
     * 健康卡机构名称
     */
    private String healthCardOrgName;

    /**
     * 健康档案号
     */
    private String healthRecordNo;

    /**
     * 健康档案建档机构代码
     */
    private String healthRecordOrgCode;

    /**
     * 健康档案建档机构名称
     */
    private String healthRecordOrgName;

    /**
     * 患者姓名
     */
    private String patientName;

    /**
     * 联系电话
     */
    private String telecom;

    /**
     * 邮箱
     */
    private String email;

    /**
     * 性别编码
     */
    private String genderCode;

    /**
     * 性别名称
     */
    private String genderName;

    /**
     * 出生日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date birthDate;

    /**
     * 地址信息
     */
    private List<Address> addresses;

    /**
     * 婚姻状况代码
     */
    private String maritalStatusCode;

    /**
     * 婚姻状况名称
     */
    private String maritalStatusName;

    /**
     * 文化程度代码
     */
    private String educationLevelCode;

    /**
     * 文化程度名称
     */
    private String educationLevelName;

    /**
     * 民族代码
     */
    private String nationCode;

    /**
     * 民族名称
     */
    private String nationName;

    /**
     * 国家代码
     */
    private String nationalityCode;

    /**
     * 国家名称
     */
    private String nationalityName;

    /**
     * 职业类别代码
     */
    private String occupationCode;

    /**
     * 职业类别名称
     */
    private String occupationName;

    /**
     * 工作单位名称
     */
    private String workUnit;

    /**
     * 工作单位联系方式
     */
    private String workTel;

    /**
     * ABO血型代码
     */
    private String aboCode;

    /**
     * ABO血型名称
     */
    private String aboName;

    /**
     * RH血型代码
     */
    private String rhCode;

    /**
     * RH血型名称
     */
    private String rhName;

    /**
     * 联系人
     */
    List<Contact> contacts;

    /**
     * 医保保险类别代码
     */
    private String insuranceTypeCode;

    /**
     * 医疗保险类别名称
     */
    private String insuranceTypeName;

    /**
     * 医疗机构代码
     */
    @NotBlank
    private String orgCode;

    /**
     * 医疗机构名称
     */
    @NotBlank
    private String orgName;
}
